package com.smartfast4j.log4j.ext;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Priority;

/**
 * 使用Log4j输出日志到文件时会遇到这样一个问题：info.log里面也包含了error的输出。
 * 配置中关键的配置说明是这一句：log4j.appender.debug.Threshold = INFO
 * 它的作用是输出INFO级别以上的内容到info.log中，所以info.log文件中包含了ERROR级别的文件。
 * 解决办法：
 *      定义自己的Appender类，继承DailyRollingFileAppender，改写针对Threshold 的设置说明（重写针对级别的比较方法）
 *      只有当Threshold与priority一致时，才进行输出，就实现了真正Log4j按照级别输出日志文件。
 * Created by gacl on 2017/11/10.
 */
public class SmartFast4jExtDailyRollingFileAppender extends DailyRollingFileAppender {

    /**
     * 重写 isAsSevereAsThreshold(Priority priority)方法
     * 只有当Threshold与priority一致时，才进行输出，就实现了真正Log4j按照级别输出日志文件。
     * @param priority
     * @return
     */
    @Override
    public boolean isAsSevereAsThreshold(Priority priority) {
        //只判断是否相等，而不判断优先级
        return this.getThreshold().equals(priority);
    }
}
